package com.example.demo;

import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;

@RestController


@RequestMapping("/parameter")
public class test_two {

    @RequestMapping("/r1")
    public String r1(String username , String password , String age) {
        return "接收到参数：username = " + username + " password = " + password + " age = " + age;
    }

    //接收参数转换成对象参数
    @RequestMapping("/")
    public String r2(Person person) {
        return "接收到参数 person : " + person;
    }

    //参数绑定(前端和后端的接收参数名称不一样都可以（下面前端是 username ，后端是 recourse）， required 默认是ture，表示必传参数)
    @RequestMapping("/r3")
    public String r3(@RequestParam(value = "username" , required = false) String recourse) {
        return recourse;
    }

    //数组（复选框）传递参数
    @RequestMapping("/r4")
    public String r4(@RequestParam("names") String[] arr) {
        return "接收到参数 arr : " + Arrays.toString(arr);
    }

    //列表传递参数
    @RequestMapping("/r5")
    public String r5(@RequestParam(value = "names" , required = false) List<String> arr) {
        return "接收到参数 arr : " + arr;
    }

    //接收 json 格式的参数
    @RequestMapping("/r6")
    public String r6(@RequestBody Person person) {
        return  "接收到参数 person:" + person;
    }

    //从 URL 资源路径获取参数
    @RequestMapping("/r7/{type}")
    public String r7(@PathVariable String type) {
        return "接收到参数: type = " + type;
    }

    @RequestMapping("/r7/{fortype}/{ids}")
    public String r8(@PathVariable("fortype") String type , @PathVariable("ids") Integer id) {
        return "接收到参数: fortype = " + type + ", ids = " + id;
    }

    //接收文件
    @RequestMapping("/r8")
    public String r8(@RequestPart("filename")MultipartFile file) throws IOException {
        //获取文件的信息
        System.out.println(file.getName());
        System.out.println(file.getContentType());
        System.out.println(file.getOriginalFilename());

        //把文件传到服务器（本机）的d盘（要注意文件的大小，文件太大会上传失败）
        File file1 = new File("D:/testfor/" + file.getOriginalFilename());
        file.transferTo(file1);
        return "接收到文件";
    }

}
